Under existing approaches for resource conflict resolution, a process or session may be declared as being in a “hanging” condition based on the fact that it is waiting for a resource for a period of time. For example, a process may be waiting for a disk I/O to return for 5 seconds. Consequently, an operating environment supervisor may conclude that the process is hanging. Since this process may be holding resources for which other processes are waiting, the operating environment supervisor may try to resolve the resource conflict by killing the process that is waiting for the I/O. Often, this is a correct approach, but in some environments, a disk I/O may actually take 5 seconds or longer, depending on the hardware configuration, system load, etc. Hence, the process' action might be terminated prematurely even though the process is only taking an amount of time that is normal in the process' environment.
Different hardware configurations will operate at different speeds. Finding an appropriate “timeout” value that would be applicable to all of the many different hardware configurations would be difficult, if not impossible. If a too-short timeout value is imposed on a particularly slow hardware configuration, then an undue quantity of processes may be terminated even though those processes would actually have completed their work if they had been allowed to live for at least a while longer. In such a situation, few processes may get any work done at all.